package it.polimi.traveldream.web.beans;

import java.awt.event.ActionEvent;
import java.util.List;

import it.polimi.traveldream.ejb.management.EscursioneDTO;
import it.polimi.traveldream.ejb.management.HotelDTO;
import it.polimi.traveldream.ejb.management.PPrenotatiDTO;
import it.polimi.traveldream.ejb.management.PackMng;
import it.polimi.traveldream.ejb.management.PackDTO;
import it.polimi.traveldream.ejb.management.PrenotazMng;
import it.polimi.traveldream.ejb.management.UserMgr;
import it.polimi.traveldream.ejb.management.VoloDTO;

import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

@ManagedBean(name = "prenotazBean")
@SessionScoped
public class PrenotazBean {

		
	private PackDTO selectedPack;
	
	private PPrenotatiDTO prenotazione = new PPrenotatiDTO();
	
	@EJB
	private UserMgr userMgr;
	
	
	@EJB
	private PrenotazMng prenotazMgr;
	
	@EJB
	private PackMng packMgr;
	
	
	public PackDTO getSelectedPack() {  
        return selectedPack;  
    }
	
	public void setSelectPack(PackDTO selectedPack) {
		this.selectedPack = selectedPack;
	}
	

	
    public List<HotelDTO> hotelDisponibili(){
    	return prenotazMgr.hotelFiltrati(selectedPack.getLuogo());
		
	}
    
    public List<VoloDTO> voliAndDisponili(){
    	return prenotazMgr.voliAndFiltrati(selectedPack.getLuogo());
    }
    
    public List<VoloDTO> voliRitDisponibili(){
    	return prenotazMgr.voliRitFiltrati(selectedPack.getLuogo());
    }
    
    public List<EscursioneDTO> escursioniDisponibili() {
    	return prenotazMgr.getEscursioniCitta(selectedPack.getLuogo());
    }
    
    public String confermaPrenotaz(){
    	convertToPrenotaz();
    	prenotazMgr.execQuery(selectedPack);
    	prenotazMgr.save(prenotazione);
       return "/pagine_clienti/prenotOk?faces-redirect=true";
    }
    
    private void convertToPrenotaz() {
    	prenotazione.setIdescursione(selectedPack.getEscursione());
    	prenotazione.setIdhotel(selectedPack.getHotel());
    	prenotazione.setDataPartenza(selectedPack.getDataPartenza());
    	prenotazione.setDataRitorno(selectedPack.getDataArrivo());
    	prenotazione.setLuogo(selectedPack.getLuogo());
    	prenotazione.setNomePacchetto(selectedPack.getNome());
    	prenotazione.setIdvoloandata(selectedPack.getVoloAndata());
    	prenotazione.setIdvoloritorno(selectedPack.getVoloRitorno());
    	prenotazione.setMailutente(userMgr.getUserDTO().getEmail());
    }
    
    public String save() {
		packMgr.update(selectedPack);
		return "/pagine_impiegati/modPackOk?faces-redirect=true";
	}
}
